<?php
/**
 * zen_ficheros.php
 * @author Juan Belon
 * @access public
 * @copyright LGPL, GPL
 * @package zenphp
 * @version 0.1.1
 * @uses zenphp FrameWork
 * @link http://csl2-zenphp.forja.rediris.es
 * @link http://www.zenphp.es
 * @link https://forja.rediris.es/projects/csl2-zenphp/
 * @brief Conjunto de funciones para operar/crear/modificar ficheros usando PHP
 */
// +----------------------------------------------------------------------
// | zenphp.es
// +----------------------------------------------------------------------
/**
 * Guardar un fichero en una carpeta concreta. Devuelve false si ha habido un error,lo guarda en $errores.
 * En otro caso devuelve el fichero tal como quedaria almacenado en el hdd del servidor (sin la ruta).
 *
 * @param str $nombre
 * @param str $directorio_destino
 * @param str $errores
 * @return str
 */
function zen_guardarFichero($nombre='fichero',$directorio_destino,&$errores){
	if (!isset($_FILES[$nombre]['name'])) return "";
	$fichero = ereg_replace('(([^0-9a-zA-Z_\.])+)', "",basename($_FILES[$nombre]['name']));
	if(empty($fichero)){
		$errores = _("El fichero est&aacute; vacio.");
		return false;
	}
	if (!is_dir($directorio_destino)) {
		$directorio_destino = ZF_DIR_PPAL . $directorio_destino;
		if (!is_dir($directorio_destino)) {
			$errores = _("El directorio de destino no existe.");
			return false;
		}
	}
	$destino = $directorio_destino . $fichero;
	if (!move_uploaded_file($_FILES[$nombre]['tmp_name'],$destino)) {
		$errores = _("Error subiendo fichero.");
		return false;
	}
		
	return $fichero;
}
/**
 * Toma un array de <input type="file" name="ficheros[]"> y los guarda en $destino devolviendo un array de nombres y en $errores lo que no funcion
 * @param str $nombre
 * @param str $destino
 * @param str $errores
 * @return array
 */
function zen_guardarFicheros($nombre="ficheros",$destino,&$errores){
	$errores = "";
	$listado = array(); //ficheros guardados
	
	if (!isset($_FILES[$nombre])) return $listado;
	$f =& $_FILES[$nombre]['name'];
	$n = count($f);
	for ($i=0; $i<$n; $i++){
		if (empty($f[$i])) continue;
		$fichero = ereg_replace('(([^0-9a-zA-Z_\.])+)', "",basename($f[$i]));
		if (!move_uploaded_file($_FILES[$nombre]['tmp_name'][$i],$destino.$fichero))
		 $errores .= _("Error subiendo fichero.")." (".$f[$i].") ";
		else
		 array_push($listado,$fichero);
	}
	
	return $listado;
}
?>